#ifndef TASK_H
#define TASK_H

#include <stdint.h>
#include "../cpu/isr.h"

#define MAX_TASKS 3
#define STACK_SIZE 1024

// 最后32位存放esp地址 用来找到isr_registers_t结构的地址 从而恢复该任务
typedef struct {
    uint8_t stack[STACK_SIZE];
} task_t;

typedef void (*task_callback)(void);

void add_task(task_t *t);
task_t* schedule_task(isr_registers_t *reg);
void init_task(task_t *t, task_callback callback);

#endif
